package java0405;

public class Solution {

    // 力扣 翻转字符串里的单词
    // 给定一个字符串，逐个翻转字符串中的每个单词。
    //说明：
    //无空格字符构成一个 单词 。
    //输入字符串可以在前面或者后面包含多余的空格，但是反转后的字符不能包括。
    //如果两个单词间有多余的空格，将反转后单词间的空格减少到只含一个。
    public String reverseWords(String s) {
        if (s == null) {
            return "";
        }
        String s1 = s.trim();
        if (s1 == "") {
            return "";
        }
        String[] strings = s1.split(" ");
        String ret = "";
        for (int i = strings.length - 1; i >= 1; i--) {
            if (!strings[i].equals("")) {
                ret += strings[i] + " ";
            }
        }
        ret += strings[0];
        return ret;
    }

    // 实现 strStr()
    // 实现 strStr() 函数。
    //给定一个 haystack 字符串和一个 needle 字符串，在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在，则返回  -1。
    public int strStr(String haystack, String needle) {
        if (haystack == null) {
            return -1;
        }
        if (needle == null) {
            return -1;
        }
        if ("".equals(needle)) {
            return 0;
        }
        int hi1 = 0;
        int hi2 = 0;
        int ni = 0;
        for (; hi1 < haystack.length(); hi1++) {
            ni = 0;
            if (haystack.charAt(hi1) == needle.charAt(ni)) {
                hi2 = hi1;
                for (; ni < needle.length(); ni++,hi2++) {
                    if (hi2 >= haystack.length()) {
                        return -1;
                    }
                    if (haystack.charAt(hi2) != needle.charAt(ni)) {
                        break;
                    }
                }
                if (ni == needle.length()) {
                    return hi1;
                }
            }
        }
        return -1;
    }

    // 反转字符串
    // 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
    //不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
    //你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
    public void reverseString(char[] s) {
        if (s == null) {
            return;
        }
        if (s.length == 0) {
            return;
        }
        int left = 0;
        int right = s.length - 1;
        while (left < right) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
            left++;
            right--;
        }
        return;
    }

    public static void main(String[] args) {
        String string = "a good   example";
        String[] strings = string.split(" ");
        System.out.println();
    }
}
